import pandas
import yaml

from path_file import path_file


def read_excel(filepath, sheet_name):
    """读取excel文件并转换"""
    # keep_default_na默认是True，意思是读取空单元格时结果是na，na的话咱么后续不好处理
    # 所以我们把他设置为False，那么空单元格读取后就是空字符串
    # engine表示pandas在读取excel时使用的底层引擎，所以装pandas还是装openpyxl
    res = pandas.read_excel(f"{path_file}{filepath}", sheet_name=sheet_name, keep_default_na=False, engine='openpyxl')
    # print(res)
    # res结果数据格式不符合pytest参数化时需要的数据格式，所以我们要做数据转换
    # 目前我们pytest参数化时都采用的数据格式是一个二维列表，所以我们将res转成二维列表
    lines_count = res.shape[0]  # 获取总行数
    cols_count = res.shape[1]  # 获取总列数
    data = []  # data就是用来存储我们转换之后的数据的
    for i in range(lines_count):
        line = []  # 存储当前行的数据
        for j in range(cols_count):
            cell_data = res.iloc[i, j]  # 根据行和列得到某个单元格的数据
            line.append(cell_data)
        data.append(line)
    return data


def read_yml(filepath):
    """读取yml文件"""
    with open(file=f"{path_file}{filepath}", mode='r',encoding='UTF-8') as f:
        content = yaml.load(f, Loader=yaml.FullLoader)
        return content

def writ_yml(filepath, content):
    """yml文件写入"""
    with open(file=f"{path_file}{filepath}", mode='w',encoding='UTF-8') as f:
        yaml.dump(content,f,Dumper=yaml.Dumper)


if __name__ == '__main__':
    print(read_excel('/data/mtxshop_test.xlsx', '添加购物车测试数据'))
    # print(read_yml("\data\mtxshop_testdata.yml"))